/*
 * ArgonMS MapleStory server emulator written in Java
 * Copyright (C) 2011-2013  GoldenKevin
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package argonms.common.character;

/**
 * A class of constants for player skills.
 * @author GoldenKevin
 */
public final class Skills {
	public static final int
		FOLLOW_THE_LEAD = 8,
		RECOVERY = 1001,
		MONSTER_RIDING = 1004,
		ECHO_OF_HERO = 1005,

		IMPROVED_HP_RECOVERY = 1000000,
		IMPROVED_MAXHP_INCREASE = 1000001,
		IRON_BODY = 1001003,

		CRUSADER_SWORD_MASTERY = 1100000,
		AXE_MASTERY = 1100001,
		CRUSADER_SWORD_BOOSTER = 1101004,
		AXE_BOOSTER = 1101005,
		RAGE = 1101006,
		FIGHTER_POWER_GUARD = 1101007,

		COMBO = 1111002,
		SWORD_PANIC = 1111003,
		AXE_PANIC = 1111004,
		SWORD_COMA = 1111005,
		AXE_COMA = 1111006,
		ARMOR_CRASH = 1111007,
		SHOUT = 1111008,

		HERO_GUARDIAN = 1120005,
		HERO_MAPLE_WARRIOR = 1121000,
		HERO_MONSTER_MAGNET = 1121001,
		HERO_POWER_STANCE = 1121002,
		ENRAGE = 1121010,
		HERO_HEROS_WILL = 1121011,

		PAGE_SWORD_MASTERY = 1200000,
		BW_MASTERY = 1200001,
		PAGE_SWORD_BOOSTER = 1201004,
		BW_BOOSTER = 1201005,
		THREATEN = 1201006,
		PAGE_POWER_GUARD = 1201007,

		CHARGED_BLOW = 1211002,
		SWORD_FIRE_CHARGE = 1211003,
		BW_FLAME_CHARGE = 1211004,
		SWORD_ICE_CHARGE = 1211005,
		BW_BLIZZARD_CHARGE = 1211006,
		SWORD_THUNDER_CHARGE = 1211007,
		BW_LIGHTNING_CHARGE = 1211008,
		MAGIC_CRASH = 1211009,

		PALADIN_GUARDIAN = 1220006,
		ADVANCED_CHARGE_BLOW = 1220010,
		PALADIN_MAPLE_WARRIOR = 1221000,
		PALADIN_MONSTER_MAGNET = 1221001,
		PAGE_POWER_STANCE = 1221002,
		SWORD_HOLY_CHARGE = 1221003,
		BW_DIVINE_CHARGE = 1221004,
		HEAVENS_HAMMER = 1221011,
		PALADIN_HEROS_WILL = 1221012,

		SPEAR_MASTERY = 1300000,
		POLE_ARM_MASTERY = 1300001,
		SPEAR_BOOSTER = 1301004,
		POLE_ARM_BOOSTER = 1301005,
		IRON_WILL = 1301006,
		SPEARMAN_HYPER_BODY = 1301007,

		SACRIFICE = 1311005,
		DRAGON_ROAR = 1311006,
		POWER_CRASH = 1311007,
		DRAGON_BLOOD = 1311008,

		DARK_KNIGHT_MAPLE_WARRIOR = 1321000,
		DARK_KNIGHT_MONSTER_MAGNET = 1321001,
		DARK_KNIGHT_POWER_STANCE = 1321002,
		BEHOLDER = 1321007,
		DARK_KNIGHT_HEROS_WILL = 1321010,

		IMPROVED_MAXMP_INCREASE = 2000001,
		MAGIC_GUARD = 2001002,
		MAGIC_ARMOR = 2001003,

		FP_MP_EATER = 2100000,
		FP_MEDITATION = 2101001,
		FP_SLOW = 2101003,
		POISON_BREATH = 2101005,

		EXPLOSION = 2111002,
		POISON_MIST = 2111003,
		FP_SEAL = 2111004,
		FP_SPELL_BOOSTER = 2111005,
		FP_ELEMENT_COMPOSITION = 2111006,

		FP_MAPLE_WARRIOR = 2121000,
		FP_BIG_BANG = 2121001,
		FP_MANA_REFLECTION = 2121002,
		FP_INFINITY = 2121004,
		ELQUINES = 2121005,
		PARALYZE = 2121006,
		FP_HEROS_WILL = 2121008,

		IL_MP_EATER = 2200000,
		IL_MEDITATION = 2201001,
		IL_SLOW = 2201003,
		COLD_BEAM = 2201004,

		ICE_STRIKE = 2211002,
		IL_SEAL = 2211004,
		IL_SPELL_BOOSTER = 2211005,
		IL_ELEMENT_COMPOSITION = 2211006,

		IL_MAPLE_WARRIOR = 2221000,
		IL_BIG_BANG = 2221001,
		IL_MANA_REFLECTION = 2221002,
		IL_INFINITY = 2221004,
		IFRIT = 2221005,
		IL_BLIZZARD = 2221007,
		IL_HEROS_WILL = 2221008,

		CLERIC_MP_EATER = 2300000,
		HEAL = 2301002,
		INVINCIBLE = 2301003,
		CLERIC_BLESS = 2301004,
		DISPEL = 2311001,

		MYSTIC_DOOR = 2311002,
		CLERIC_HOLY_SYMBOL = 2311003,
		DOOM = 2311005,
		SUMMON_DRAGON = 2311006,

		BISHOP_MAPLE_WARRIOR = 2321000,
		BISHOP_BIG_BANG = 2321001,
		BISHOP_MANA_REFLECTION = 2321002,
		BISHOP_INFINITY = 2321004,
		HOLY_SHIELD = 2321005,
		BISHOP_RESURRECTION = 2321006,
		BAHAMUT = 2321003,
		BISHOP_HEROS_WILL = 2321009,

		FOCUS = 3001003,

		BOW_MASTERY = 3100000,
		BOW_BOOSTER = 3101002,
		BOW_SOUL_ARROW = 3101004,
		ARROW_BOMB = 3101005,

		BOW_PUPPET = 3111002,
		ARROW_RAIN = 3111004,
		SILVER_HAWK = 3111005,

		BOW_EXPERT = 3120005,
		BOW_MASTER_MAPLE_WARRIOR = 3121000,
		BOW_MASTER_SHARP_EYES = 3121002,
		HURRICANE = 3121004,
		PHOENIX = 3121006,
		HAMSTRING = 3121007,
		CONCENTRATE = 3121008,
		BOW_MASTER_HEROS_WILL = 3121009,

		XBOW_MASTERY = 3200000,
		XBOW_BOOSTER = 3201002,
		XBOW_SOUL_ARROW = 3201004,

		XBOW_PUPPET = 3211002,
		XBOW_BLIZZARD = 3211003,
		ARROW_ERUPTION = 3211004,
		GOLDEN_EAGLE = 3211005,

		MARKSMAN_BOOST = 3220004,
		XBOW_MASTER_MAPLE_WARRIOR = 3221000,
		PIERCING_ARROW = 3221001,
		XBOW_MASTER_SHARP_EYES = 3221002,
		FROSTPREY = 3221005,
		BLIND = 3221006,
		SNIPE = 3221007,
		MARKSMAN_HEROS_WILL = 3221008,

		DISORDER = 4001002,
		DARK_SIGHT = 4001003,
		DOUBLE_STAB = 4001334,

		CLAW_MASTERY = 4100000,
		CLAW_BOOSTER = 4101003,
		SIN_HASTE = 4101004,
		DRAIN = 4101005,

		ALCHEMIST = 4110000,
		MESO_UP = 4111001,
		SHADOW_PARTNER = 4111002,
		SHADOW_WEB = 4111003,

		NL_SHADOW_SHIFTER = 4120002,
		NL_NINJA_AMBUSH = 4121004,
		VENOMOUS_STAR = 4120005,
		NL_MAPLE_WARRIOR = 4121000,
		NL_TAUNT = 4121003,
		SHADOW_STARS = 4121006,
		NL_HEROS_WILL = 4121009,

		DAGGER_MASTERY = 4200000,
		DAGGER_BOOSTER = 4201002,
		DIT_HASTE = 4201003,
		SAVAGE_BLOW = 4201005,

		CHAKRA = 4211001,
		ASSAULTER = 4211002,
		PICK_POCKET = 4211003,
		BAND_OF_THIEVES = 4211004,
		MESO_GUARD = 4211005,
		MESO_EXPLOSION = 4211006,

		SHADOWER_SHADOW_SHIFTER = 4220002,
		VENOMOUS_STAB = 4220005,
		SHADOWER_MAPLE_WARRIOR = 4221000,
		SHADOWER_TAUNT = 4221003,
		SHADOWER_NINJA_AMBUSH = 4221004,
		SMOKESCREEN = 4221006,
		BOOMERANG_STEP = 4221007,
		SHADOWER_HEROS_WILL = 4221008,

		DASH = 5001005,

		IMPROVE_MAXHP = 5100000,
		KNUCKLER_MASTERY = 5100001,
		BACKSPIN_BLOW = 5101002,
		DOUBLE_UPPERCUT = 5101003,
		CORKSCREW_BLOW = 5101004,
		MP_RECOVERY = 5101005,
		KNUCKLER_BOOSTER = 5101006,

		ENERGY_CHARGE = 5110001,
		ENERGY_DRAIN = 5111004,

		BUCCANEER_MAPLE_WARRIOR = 5121000,
		ENERGY_ORB = 5121002,
		DEMOLITION = 5121004,
		SNATCH = 5121005,
		BARRAGE = 5121007,
		BUCCANEER_PIRATES_RAGE = 5121008,
		SPEED_INFUSION = 5121009,
		TIME_LEAP = 5121010,

		GUN_MASTERY = 5200000,
		GRENADE = 5201002,
		GUN_BOOSTER = 5201003,
		BLANK_SHOT = 5201004,
		WINGS = 5201005,

		OCTOPUS = 5211001,
		GAVIOTA = 5211002,
		ICE_SPLITTER = 5211005,
		HOMING_BEACON = 5211006,

		WRATH_OF_THE_OCTOPI = 5220002,
		CORSAIR_MAPLE_WARRIOR = 5221000,
		RAPID_FIRE = 5221004,
		BATTLE_SHIP = 5221006,
		HYPNOTIZE = 5221009,
		CORSAIR_PIRATES_RAGE = 5221010, //the v0.62 mistakenly names it "Speed Infusion" in the Corsair skill book

		GM_HASTE = 9001000,
		HEAL_AND_DISPEL = 9101000,
		SUPER_GM_HASTE = 9101001,
		GM_HOLY_SYMBOL = 9101002,
		GM_BLESS = 9101003,
		HIDE = 9101004,
		GM_RESURRECTION = 9101005,
		GM_HYPER_BODY = 9101008
	;

	/**
	 * All skills as of v0.62 (taken from Skill.wz) - if new skills are added in
	 * future versions and you wish to upgrade the server's version, you may
	 * want to edit this so that !maxskills, !maxall, and NimaKIN maxes those
	 * new skills.
	 * You can also remove some skill IDs if you do not wish to max that skill
	 * with the !maxall or !maxskills commands, or the NimaKIN NPC.
	 */
	public static final int[] ALL = {
		8, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1000000, 1000001, 1000002,
		1001003, 1001004, 1001005, 1100000, 1100001, 1100002, 1100003, 1101004,
		1101005, 1101006, 1101007, 1110000, 1110001, 1111002, 1111003, 1111004,
		1111005, 1111006, 1111007, 1111008, 1120003, 1120004, 1120005, 1121000,
		1121001, 1121002, 1121006, 1121008, 1121010, 1121011, 1200000, 1200001,
		1200002, 1200003, 1201004, 1201005, 1201006, 1201007, 1210000, 1210001,
		1211002, 1211003, 1211004, 1211005, 1211006, 1211007, 1211008, 1211009,
		1220005, 1220006, 1220010, 1221000, 1221001, 1221002, 1221003, 1221004,
		1221007, 1221009, 1221011, 1221012, 1300000, 1300001, 1300002, 1300003,
		1301004, 1301005, 1301006, 1301007, 1310000, 1311001, 1311002, 1311003,
		1311004, 1311005, 1311006, 1311007, 1311008, 1320005, 1320006, 1320008,
		1320009, 1321000, 1321001, 1321002, 1321003, 1321007, 1321010, 2000000,
		2000001, 2001002, 2001003, 2001004, 2001005, 2100000, 2101001, 2101002,
		2101003, 2101004, 2101005, 2110000, 2110001, 2111002, 2111003, 2111004,
		2111005, 2111006, 2121000, 2121001, 2121002, 2121003, 2121004, 2121005,
		2121006, 2121007, 2121008, 2200000, 2201001, 2201002, 2201003, 2201004,
		2201005, 2210000, 2210001, 2211002, 2211003, 2211004, 2211005, 2211006,
		2221000, 2221001, 2221002, 2221003, 2221004, 2221005, 2221006, 2221007,
		2221008, 2300000, 2301001, 2301002, 2301003, 2301004, 2301005, 2310000,
		2311001, 2311002, 2311003, 2311004, 2311005, 2311006, 2321000, 2321001,
		2321002, 2321003, 2321004, 2321005, 2321006, 2321007, 2321008, 2321009,
		3000000, 3000001, 3000002, 3001003, 3001004, 3001005, 3100000, 3100001,
		3101002, 3101003, 3101004, 3101005, 3110000, 3110001, 3111002, 3111003,
		3111004, 3111005, 3111006, 3120005, 3121000, 3121002, 3121003, 3121004,
		3121006, 3121007, 3121008, 3121009, 3200000, 3200001, 3201002, 3201003,
		3201004, 3201005, 3210000, 3210001, 3211002, 3211003, 3211004, 3211005,
		3211006, 3220004, 3221000, 3221001, 3221002, 3221003, 3221005, 3221006,
		3221007, 3221008, 4000000, 4000001, 4001002, 4001003, 4001334, 4001344,
		4100000, 4100001, 4100002, 4101003, 4101004, 4101005, 4110000, 4111001,
		4111002, 4111003, 4111004, 4111005, 4111006, 4120002, 4120005, 4121000,
		4121003, 4121004, 4121006, 4121007, 4121008, 4121009, 4200000, 4200001,
		4201002, 4201003, 4201004, 4201005, 4210000, 4211001, 4211002, 4211003,
		4211004, 4211005, 4211006, 4220002, 4220005, 4221000, 4221001, 4221003,
		4221004, 4221006, 4221007, 4221008, 5000000, 5001001, 5001002, 5001003,
		5001005, 5100000, 5100001, 5101002, 5101003, 5101004, 5101005, 5101006,
		5101007, 5110000, 5110001, 5111002, 5111004, 5111005, 5111006, 5121000,
		5121001, 5121002, 5121003, 5121004, 5121005, 5121007, 5121008, 5121009,
		5121010, 5200000, 5201001, 5201002, 5201003, 5201004, 5201005, 5201006,
		5210000, 5211001, 5211002, 5211004, 5211005, 5211006, 5220001, 5220002,
		5220011, 5221000, 5221003, 5221004, 5221006, 5221007, 5221008, 5221009,
		5221010, 9001000, 9001001, 9001002, 9101000, 9101001, 9101002, 9101003,
		9101004, 9101005, 9101006, 9101007, 9101008
	};

	public static boolean isBeginnerSkill(int skillid) {
		return (skillid / 10000) == 0;
	}

	public static boolean isFourthJob(int skillid) {
		return ((skillid / 10000) % 10) == 2;
	}

	private Skills() {
		//uninstantiable...
	}
}
